
#include <MPU6050_tockn.h>
#include <Wire.h>

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

int z;

MPU6050 mpu6050(Wire);//定义mpu6050引脚
RF24 radio(7,8);
const byte address[6] = "00001";//nrf24l01 地址
const char go[] ="a_go";//发送数据前进
const char back[] ="b_back";//发送数据后退
const char left[] ="c_left";//发送数据左平移
const char right[] ="d_right";//发送数据右平移
const char left_turn[] ="e_left_turn";//发送数据左转
const char right_turn[] ="f_right_turn";//发送数据右转

const char tc[]="";//停车信号

void setup() {
  Serial.begin(9600);//串口初始化波特率9600
  Wire.begin();//iic引脚初始化
  mpu6050.begin();//mpu6050初始化
  mpu6050.calcGyroOffsets(true);
  radio.begin();//nrf24l01初始化
  radio.openWritingPipe(address);//地址初始化
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();//停止听，开始发送
}

void loop() {
  mpu6050.update();//mpu6050数据更新
  z=(mpu6050.getAngleZ()-1.1);//z获取z轴转正
  Serial.println(mpu6050.getAngleZ()-1);
if(mpu6050.getAngleX()>=50 && mpu6050.getAngleX()<=90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print(mpu6050.getAngleX());//串口打印角度，可以删除，留着为了好测试
  Serial.print("\tangleX : ");
  radio.write(&left, sizeof(left));//nrf24l01发送左平移“c_left”中的“c”
  delay(100);//延时100ms
}//到这里
else if(mpu6050.getAngleX()<=-50 && mpu6050.getAngleX()>=-90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print(mpu6050.getAngleX());//串口打印角度，可以删除，留着为了好测试
  Serial.print("\tangleX : ");
  radio.write(&right, sizeof(right));//nrf24l01发送左平移“c_left”中的“c”
  delay(10);
}
else if(mpu6050.getAngleY()>=50 && mpu6050.getAngleY()<=90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print(mpu6050.getAngleY());//串口打印角度，可以删除，留着为了好测试
  radio.write(&go, sizeof(go));//nrf24l01发送左平移“c_left”中的“c”
  delay(10);
}
else if(mpu6050.getAngleY()<=-50 && mpu6050.getAngleY()>=-90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print(mpu6050.getAngleY());//串口打印角度，可以删除，留着为了好测试
  radio.write(&back, sizeof(back));//nrf24l01发送左平移“c_left”中的“c”
  delay(10);
}
else if(z>=50  && z<=90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print((mpu6050.getAngleZ()-1));//串口打印角度，可以删除，留着为了好测试
  Serial.print("\tangleZ : ");
  radio.write(&left_turn, sizeof(left_turn));//nrf24l01发送左平移“c_left”中的“c”
  delay(10);
}
else if(z<=-50 && z>=-90)//X的角度大于等于50小于等于90时 左平移
{
  Serial.print(mpu6050.getAngleZ()-1);//串口打印角度，可以删除，留着为了好测试
  Serial.print("\tangleZ : ");
  radio.write(&right_turn, sizeof(right_turn));//nrf24l01发送左平移“c_left”中的“c”
  delay(10);
}
else//否则
{
  radio.write(&tc, sizeof(tc));//发送停车信号
}
}

